label: Fix mnemonic handling
authorMatthias Clasen <mclasen@redhat.com>
Tue, 15 Jun 2021 17:06:10 +0000 (13:06 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 15 Jun 2021 17:06:10 +0000 (13:06 -0400)
We were not handling the case right in which we
want to use underlines, but not use markup. Since
we are now using pango_parse_markup for this case,
we need to escape the xml markup.

Fixes: #4041
gtk/gtklabel.c

index 48f363b3c1feb0d6fdafaed3d8279873097d68d2..bfa231b9d9807e82d8d000964c88500cb3e45676 100644 (file)
@@ -2981,8 +2981,18 @@ gtk_label_recalculate (GtkLabel *self)
   gtk_label_clear_layout (self);
   gtk_label_clear_select_info (self);
 
-  if (self->use_markup || self->use_underline)
-    gtk_label_set_markup_internal (self, self->label, self->use_underline);
+  if (self->use_markup)
+    {
+      gtk_label_set_markup_internal (self, self->label, self->use_underline);
+    }
+  else if (self->use_underline)
+    {
+      char *text;
+
+      text = g_markup_escape_text (self->label, -1);
+      gtk_label_set_markup_internal (self, text, TRUE);
+      g_free (text);
+    }
   else
     {
       g_clear_pointer (&self->markup_attrs, pango_attr_list_unref);